package com.simple.common.entity.po.sys;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.util.Date;
import java.util.Map;

/**
 * 退款流水
 * @author yasud
 * @date 2020年09月30日 16:04
 * @description
 */
@Data
public class RefundTradeInventory extends BaseEntity2 {

    /**
     * 退款订单id
     */
    private Long refundTradeId;

    /**
     * 单笔退款金额
     */
    private String refundAmount;

    /**
     * 实际退款金额
     */
    private String realRefundAmount;

    /**
     * 渠道退款状态
     */
    private String channelRefundStatus;


    /**
     * 渠道退款订单号
     */
    private String channelRefundNo;

    /**
     * 渠道退款消息
     */
    private String channelRefundMsg;

    /**
     * 退款原因
     */
    private String refundReason;

    /**
     * 退款时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date refundTime;

    /**
     * 当前退款状态
     */
    private Status status;

    /**
     * 审核状态(新增)
     */
    private AuditStatus auditStatus;

    /**
     * 退款凭证(新增)
     */
    private String refundCertificate;

    /**
     * 备注(新增)
     */
    private String remark;

      /**
     * 初审人姓名
     */
    private String fristAuditName;

      /**
     * 初审时间
     */
    private Date fristAuditTime;

      /**
     * 初审备注
     */
    private String fristAuditRemark;

      /**
     * 终审人姓名
     */
    private String lastAuditName;

      /**
     * 终审时间
     */
      @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
      private Date lastAuditTime;


    /**
     * 终审备注
     */
    private String lastAuditRemark;

    /**
     * 退款发起人
     */
    private String refundOriginator;

    /**
     * 终审时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endAuditTime;

    /**
     * 拓展字段(新增)
     */
    private Map<String, Object> extra;

    /**
     * 退款状态
     */
    public enum Status {

        /**
         * 已受理
         */
        ACCEPT,

        /**
         * 处理中
         */
        PENDING,

        /**
         * 成功
         */
        SUCCESS,

        /**
         * 失败
         */
        FAILED
    }

    public enum AuditStatus {

        /**
         * 不用审核
         */
        NONE,

        /**
         * 审核中
         */
        AUDIT_PROCESS,

        /**
         * 审核成功
         */
        AUDIT_SUCCESS,
        /**
         * 审核失败
         */
        AUDIT_FAILURE,
        /**
         * 初审成功
         */
        FRIST_AUDIT_SUCCESS,
        /**
         * 初审失败
         */
        FRIST_AUDIT_FAILURE
    }
}
